package com.zhangwei.liwushuo.fragment;

import android.widget.AbsListView;
import android.widget.ImageView;
import android.widget.ListView;

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.squareup.okhttp.Request;
import com.zhangwei.liwushuo.R;
import com.zhangwei.liwushuo.bean.AppEntity;
import com.zhangwei.liwushuo.bean.Category;
import com.zhangwei.liwushuo.bean.Data;
import com.zhangwei.liwushuo.config.AppConstants;
import com.zhangwei.liwushuo.connect.OkHttpClientManager;
import com.zhangwei.liwushuo.adapter.vh.GiftMenuView;
import com.zw.library.adapter.AAdapter;

import org.androidannotations.annotations.EFragment;
import org.androidannotations.annotations.ViewById;

/**
 * @说 明：
 * 分类菜单 双ListView  右边滑动  左边选中item 实现
 * 联网工具类okHttpClient
 * 解析采用gson解析
 * @项目名称：LiWuShuo
 * @包 名：
 * @类 名： ProductFragment
 * @创 建人： zhangwei
 * @创建时间：2015-08-24 09:46
 * @版 本：v1.0
 * @修 改人：
 */
@EFragment(R.layout.fragment_category_gift)
public class CategoryGiftFragment extends BaseFragment implements AbsListView.OnScrollListener {
    @ViewById
    ImageView ivGiftArtifact;
    @ViewById
    ListView menuListview;
    @ViewById
    ListView productListview;
    private AAdapter<Category> menuAdapter;

    @Override
    public void initView() {
        super.initView();
        menuListview.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
        menuAdapter = new AAdapter<>(GiftMenuView.class, getActivity());
        menuListview.setAdapter(menuAdapter);
    }

    @Override
    public void initData() {
        super.initData();
        OkHttpClientManager.getAsyn(AppConstants.URL_CATEGORIES_GIFT, new OkHttpClientManager.ResultCallback<String>() {
            @Override
            public void onError(Request request, Exception e) {

            }

            @Override
            public void onResponse(String response) {
                TypeReference<AppEntity<Data<Category>>> type = new TypeReference<AppEntity<Data<Category>>>() {
                };
                AppEntity<Data<Category>> entity = JSONObject.parseObject(response, type);
                if (entity != null && entity.getCode() == 200) {
                    menuListview.setItemChecked(0, true);
                    menuAdapter.getData().addAll(entity.getData().getCategories());
                    menuAdapter.notifyDataSetChanged();
                }
            }
        });

    }

    /**
     * 正在滚动时回调，回调2-3次，手指没抛则回调2次。scrollState = 2的这次不回调
     * 回调顺序如下
     * 第1次：scrollState = SCROLL_STATE_TOUCH_SCROLL(1) 正在滚动
     * 第2次：scrollState = SCROLL_STATE_FLING(2) 手指做了抛的动作（手指离开屏幕前，用力滑了一下）
     * 第3次：scrollState = SCROLL_STATE_IDLE(0) 停止滚动
     * @param view
     * @param scrollState
     */
    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {

    }

    /**
     * 滚动时一直回调，直到停止滚动时才停止回调。单击时回调一次。
     *
     * @param view
     * @param firstVisibleItem 当前能看见的第一个列表项ID（从0开始）
     * @param visibleItemCount 当前能看见的列表项个数（小半个也算）
     * @param totalItemCount   列表项共数
     */
    @Override
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

    }
}
